【MySQL】日時型(DATE / TIME / DATETIME / TIMESTAMP)
MySQLの日付・日時に関する型について解説します。
検証環境
日時型
MySQLは日付や日時に関する型を扱うことができます。
型 | 意味 | フォーマット |
---|---|---|
DATE | 日付 | YYYY-MM-DD |
TIME | 時間 | HH:MM:SS |
DATETIME | 日時 | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | タイムスタンプ | 秒数(1970-01-01 00:00:00からの秒数) |
DATE
DATEは日付の型です。
基本構文
カラム名 DATE
サンプル
mysql> CREATE TABLE sample ( date DATE );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( '2024-01-16' );
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM sample;
+------------+
| date |
+------------+
| 2024-01-16 |
+------------+
1 row in set (0.00 sec)
TIME
TIMEは時間を表す型です。
基本構文
カラム名 TIME
サンプル
mysql> CREATE TABLE sample ( time TIME );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( '12:34:56' );
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM sample;
+----------+
| time |
+----------+
| 12:34:56 |
+----------+
1 row in set (0.01 sec)
ミリ秒に対応するには型の後に(桁数)
を記述します。
mysql> CREATE TABLE sample ( time TIME(3) );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( '12:34:56' );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample VALUE ( '12:34:56.789' );
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM sample;
+--------------+
| time |
+--------------+
| 12:34:56.000 |
| 12:34:56.789 |
+--------------+
2 rows in set (0.00 sec)
DATETIME
DATETIMEは日時の型です。
基本構文
カラム名 DATETIME
サンプル
mysql> CREATE TABLE sample ( dt DATETIME );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( '2024-01-16 12:34:56' );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample VALUE ( '2024-01-16' );
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM sample;
+---------------------+
| dt |
+---------------------+
| 2024-01-16 12:34:56 |
| 2024-01-16 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)
mysql> INSERT INTO sample VALUE ( '12:34:56' );
ERROR 1292 (22007): Incorrect datetime value: '12:34:56' for column 'dt' at row 1
日付のみの値の場合、時間は00:00:00
が自動補完されます。
また、ミリ秒に対応するにはTIMEと同様に型の後に(桁数)
を記述します。
mysql> CREATE TABLE sample ( dt DATETIME(3) );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( '2024-01-16 12:34:56.789' );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample VALUE ( '2024-01-16' );
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM sample;
+-------------------------+
| dt |
+-------------------------+
| 2024-01-16 12:34:56.789 |
| 2024-01-16 00:00:00.000 |
+-------------------------+
2 rows in set (0.00 sec)
TIMESTAMP
TIMESTAMPは1970-01-01 00:00:00からの秒数を表す型です。
値はDATEやDATETIMEと同様に記述できます。
基本構文
カラム名 TIMESTAMP
サンプル
mysql> CREATE TABLE sample ( ts TIMESTAMP );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample VALUE ( '2024-01-16 12:34:56' );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample VALUE ( '2024-01-16' );
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM sample;
+---------------------+
| ts |
+---------------------+
| 2024-01-16 12:34:56 |
| 2024-01-16 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)